home *** CD-ROM | disk | FTP | other *** search
/ Scene Storm / Scene Storm - Volume 1.iso / coding / c / amiexpress / source / doors / who / who.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-12-26  |  7.5 KB  |  163 lines

  1. #include <exec/exec.h>
  2. #include <exec/semaphores.h>
  3. #include <proto/exec.h>
  4. #include <stdlib.h>
  5. #include <stdio.h>
  6. #include <string.h>
  7. #include <proto/exec.h>
  8.  
  9. #include "work:romconf/doorheader.h"
  10. #include "dh0:code/aztec/glue.h"
  11. #define sm sendmessage
  12.  
  13. void LastCommand(void);
  14. void end(void);
  15.  
  16. struct SinglePort
  17. {
  18.   struct SignalSemaphore semi;
  19.   struct MinList sl_List;
  20.   APTR *s;
  21.   UBYTE SemiName[20];
  22.   int Status;
  23.   char Handle[31];
  24.   char Location[31];
  25.   char Misc1[100];
  26.   char Misc2[100];
  27. } ;
  28. struct NodeStat
  29. {
  30.   char Status;
  31.   char info;
  32. };
  33. struct NodeInfo
  34. {
  35.   char Handle[31];
  36.   ULONG StartTime;
  37.   int ChatColor;
  38.   int Channel;
  39.   int Private;
  40.   struct NodeStat Stats[10];
  41.   APTR *t;
  42.   APTR *s;
  43.   unsigned long tasksignal;
  44. };
  45. APTR Singles[10];
  46. struct MultiPort
  47. {
  48.   struct SignalSemaphore semi;
  49.   struct MinList sl_List;
  50.   struct NodeInfo MyNode[10];
  51.   UBYTE SemiName[20];
  52. } *Nodes;
  53.  
  54. char SingleName[] = "AEStat ";
  55. void main(int argc,char *argv[]) 
  56. {
  57. char FileName[100], mes[100],mes2[100],mes1[100];
  58. char Name[100],Location[100];
  59. struct SinglePort *s;
  60. int status;
  61. int i=0;
  62.  
  63.   if(argc!=2)
  64.   {
  65.      printf("InfoNode v2.3a, written by the /X Developement Team\n");
  66.      printf("This is a XIM for AmiExpress 2.30+\n");
  67.      printf("\n");
  68.      exit(0);
  69.    }
  70.    Register(argv[1][0]-'0');
  71.  getuserstring(mes,BB_TASKPRI);
  72.   SetTaskPri(FindTask(0),atol(mes));
  73.  Nodes=(struct MultiPort *)GetSemaphore();
  74.     ObtainSemaphore((struct SignalSemaphore *)Nodes);
  75.   for(i=0;i<9;i++) Singles[i]=Nodes->MyNode[i].s;
  76.     ReleaseSemaphore((struct SignalSemaphore *)Nodes);
  77.  sm("",1);
  78.  sm("",1);
  79.  sm(".---+----------------------+---------------------------+----------------------.",1);
  80.  
  81.   sm("|Nd#| Name/Handle          Location         ",0);
  82.   sm("         | Action               |",1);
  83.   sm(")---+----------------------+---------------------------+----------------------(",1);
  84.   i=0;
  85.   while(i<9)
  86.   {
  87.  
  88.    ObtainSemaphore((struct SignalSemaphore *)Singles[i]);
  89.    s=(struct SinglePort *)Singles[i];
  90.   status=s->Status;
  91.   strcpy(Name,s->Handle);
  92.   strcpy(Location,s->Location);
  93.   strcpy(FileName,s->Misc1);
  94.   ReleaseSemaphore((struct SignalSemaphore *)Singles[i]);
  95.   switch(status)
  96.   {
  97.      case 0:  sprintf(mes, "%-20.20s | %-25.25s |",Name,Location);sprintf(mes1," %-20.20s |","IDLE"); break;
  98.      case 1:  sprintf(mes, "%-20.20s | %-25.25s |",Name,Location);
  99.               if(FileName[0]!='\0')
  100.                sprintf(mes1," DL: %-16.16s |",FileName);
  101.               else
  102.               sprintf(mes1," %-20.20s |","BEGINNING DL"); break;
  103.      case 2:  sprintf(mes, "%-20.20s | %-25.25s |",Name,Location);
  104.               if(FileName[0]!='\0')
  105.                sprintf(mes1," UL: %-16.16s |",FileName);
  106.               else sprintf(mes1," %-20.20s |","BEGINNING UL"); break;
  107.      case 3:  sprintf(mes, "%-20.20s | %-25.25s |",Name,Location);
  108.      if(i==argv[1][0]-'0')
  109.      sprintf(mes1," %-20.20s |","InfoNode v2.3a"); else
  110.     sprintf(mes1," %-20.20s |","MODULE"); break;
  111.      case 4:  sprintf(mes, "%-20.20s | %-25.25s |",Name,Location);sprintf(mes1," %-20.20s |","READING MAIL"); break;
  112.      case 5:  sprintf(mes, "%-20.20s | %-25.25s |",Name,Location);sprintf(mes1," %-20.20s |","REVIEWING STATS"); break;
  113.      case 6:  sprintf(mes, "%-20.20s | %-25.25s |",Name,Location);sprintf(mes1," %-20.20s |","ACCOUNT EDITING"); break;
  114.      case 7:  sprintf(mes, "%-20.20s | %-25.25s |",Name,Location);sprintf(mes1," %-20.20s |","ZOOMING"); break;
  115.      case 8:  sprintf(mes, "%-20.20s | %-25.25s |",Name,Location);sprintf(mes1," %-20.20s |","VIEWING DIRS"); break;
  116.      case 9:  sprintf(mes, "%-20.20s | %-25.25s |",Name,Location);sprintf(mes1," %-20.20s |","READING BULLS"); break;
  117.     case 10:  sprintf(mes, "%-20.20s | %-25.25s |",Name,Location);sprintf(mes1," %-20.20s |","VIEWING FILES"); break;
  118.     case 11:  sprintf(mes, "%-20.20s | %-25.25s |","","");sprintf(mes1," %-20.20s |","ACCOUNT SEQUENCE"); break;
  119.     case 12:  sprintf(mes, "%-20.20s | %-25.25s |",Name,Location);sprintf(mes1," %-20.20s |","LOGGING OFF"); break;
  120.     case 13:  sprintf(mes, "%-20.20s | %-25.25s |",Name,Location);sprintf(mes1," %-20.20s |","SYSOPING"); break;
  121.     case 14:  sprintf(mes, "%-20.20s | %-25.25s |",Name,Location);sprintf(mes1," %-20.20s |","USING SHELL"); break;
  122.     case 15:  sprintf(mes, "%-20.20s | %-25.25s |",Name,Location);sprintf(mes1," %-20.20s |","EDITING");break;
  123.     case 16:  sprintf(mes, "%-20.20s | %-25.25s |",Name,Location);sprintf(mes1," %-20.20s |","JOINING CONF");break;
  124.     case 17:  sprintf(mes, "%-20.20s | %-25.25s |",Name,Location);sprintf(mes1," %-20.20s |","CHATTING");break;
  125.     case 18:  sprintf(mes, "%-20.20s | %-25.25s |","","");sprintf(mes1," %-20.20s |","NODE INACTIVE.");break;
  126.     case 19:  sprintf(mes, "%-20.20s | %-25.25s |",Name,Location);sprintf(mes1," %-20.20s |","REQUESTING CHAT");break;
  127.     case 20:  sprintf(mes, "%-20.20s | %-25.25s |",Name,Location);sprintf(mes1," %-20.20s |","CONNECTING");break;
  128.     case 21:  sprintf(mes, "%-20.20s | %-25.25s |",Name,Location);sprintf(mes1," %-20.20s |","LOGGING ON");break;
  129.     case 22:  sprintf(mes, "%-20.20s | %-25.25s |","","");sprintf(mes1," %-20.20s |","AWAITING CONNECT");break;
  130.     case 23:  sprintf(mes, "%-20.20s | %-25.25s |",Name,Location);sprintf(mes1," %-20.20s |","SCANNING MAIL");break;
  131.     case 24:  sprintf(mes, "%-20.20s | %-25.25s |","","");sprintf(mes1," %-20.20s |","SHUTDOWN");break;
  132.     case 25:  sprintf(mes, "%-20.20s | %-25.25s |",Name,Location);sprintf(mes1," %-20.20s |","MULTICHAT");break;
  133.     case 26:  sprintf(mes, "%-20.20s | %-25.25s |","","");sprintf(mes1," %-20.20s |","SUSPENDED");break;
  134.     case 27:  sprintf(mes, "%-20.20s | %-25.25s |","","");sprintf(mes1," %-20.20s |","RESERVED");break;
  135.     case -1:  sprintf(mes, "%-20.20s | %-25.25s |","","");sprintf(mes1," %-20.20s |","UNAVAILABLE");break;
  136.     default:  sprintf(mes, "%-20.20s | %-25.25s |","","");sprintf(mes1," %-20.20s |","");break;
  137.   
  138.   }
  139.   sprintf(mes2,"%d ",i);
  140.   if(status!=27 && status>=0 && status!=24 && status!=18)
  141.   {
  142.     sm(mes2,0); sm(mes,0); sm(mes1,1);
  143.   sm("|---+----------------------+---------------------------+----------------------|",1);
  144.  
  145.   }
  146.   i++;
  147.   }
  148.  sm("`---------------------------------------------------------InfoNode-v2.3a------'",1);
  149.  
  150.  // sm("`--------InfoNode-v2.3a-------------Special Release for-UnLawful Entry--------'",1);
  151.  
  152.   ShutDown();
  153.   end();
  154. }
  155.  
  156. void LastCommand(void)
  157. {
  158.   sm("",1);
  159. }
  160. void end(void)
  161. {
  162.   exit(0);
  163. }